package 剑指Offer专项突破;

/**
 * @Author zhang lei
 * @Date 2022-04-20 19:22
 */
public class Algo003 {
    /**
     * 给定一个非负整数 n ，请计算 0 到 n 之间的每个数字的二进制表示中 1 的个数，并输出一个数组。
     * @param n
     * @return
     */
    public int[] countBits(int n) {
        int[] result = new int[n];
        for (int i = 0; i <= n; i++) {
            String b = Integer.toBinaryString(i);
            result[i] = countBit(b);
        }
        return result;
    }

    private int countBit(String b) {
        int result = 0;
        for (int i = 0; i < b.length(); i++) {
            if(b.charAt(i) == '1') {
                result++;
            }
        }
        return result;
    }
}
